package cn.hutool.poi.excel.cell.data;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * Excel的Sheet数据类
 * @author 徐明龙 XuMingLong 2021-11-16
 */
public class SheetData {
	/**
	 *  sheet的名称,如果为null，则使用模版页的sheet名称，使用者需要自己管理sheet名称的重名冲突问题
	 * @author 徐明龙 XuMingLong 2021-11-16
	 */
	private String sheetName;

	/**
	 * Sheet中的多张二维表的数据，将会按照顺序填充到模版里
	 * @author 徐明龙 XuMingLong 2021-11-16
	 */
	private List<TableData> tableDataList;

	/**
	 * 固定占位符的数据映射
	 * @author 徐明龙 XuMingLong 2021-11-16
	 */
	private Map<String,String> fixedDataMap;


	/**
	 * 默认构造
	 * @author 徐明龙 XuMingLong 2021-11-16
	 */
	public SheetData() {
		this(null);
	}

	/**
	 * 指定Sheet名称的构造
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @param sheetName sheet的名称
	 */
	public SheetData(String sheetName) {
		this.sheetName = sheetName;
		this.tableDataList = new LinkedList<>();
		this.fixedDataMap = new HashMap<>();
	}

	/**
	 * 获取sheet的名称
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @return java.lang.String
	 */
	public String getSheetName() {
		return sheetName;
	}

	/**
	 * 设置sheet的名称
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @param sheetName sheet的名称
	 * @return void
	 */
	public void setSheetName(String sheetName) {
		this.sheetName = sheetName;
	}

	/**
	 * 获取sheet的多张二维表的数据
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @return java.util.List<cn.hutool.poi.excel.cell.data.TableData> sheet的多张二维表的数据
	 */
	public List<TableData> getTableDataList() {
		return tableDataList;
	}

	/**
	 * 设置sheet的多张二维表的数据
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @param tableDataList sheet的多张二维表的数据
	 * @return void
	 */
	public void setTableDataList(List<TableData> tableDataList) {
		this.tableDataList = tableDataList;
	}

	/**
	 * 获取固定占位符的数据映射
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @return java.util.Map<java.lang.String,java.lang.String> 固定占位符的数据映射
	 */
	public Map<String, String> getFixedDataMap() {
		return fixedDataMap;
	}

	/**
	 *  设置固定占位符的数据映射
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @param fixedDataMap  固定占位符的数据映射
	 * @return void
	 */
	public void setFixedDataMap(Map<String, String> fixedDataMap) {
		this.fixedDataMap = fixedDataMap;
	}

	/**
	 * 增加一份二维表的数据
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @param tableData 二维表的数据
	 * @return void
	 */
	public void addTableData(TableData tableData){
		this.tableDataList.add(tableData);
	}

	/**
	 * 增加一个固定占位符的数据映射
	 * @author 徐明龙 XuMingLong 2021-11-16
	 * @param key 占位符
	 * @param value 值
	 * @return void
	 */
	public void addFixedDataMap(String key,String value){
		this.fixedDataMap.put(key, value);
	}
}
